/**
 * @author Jon Adams
 */
package org.osflash.signals.natives.sets;

import org.osflash.signals.natives.NativeSignal;
import flash.display.InteractiveObject;
import flash.events.Event;
import flash.events.FocusEvent;
import flash.events.KeyboardEvent;
import flash.events.MouseEvent;
import flash.events.TextEvent;

class InteractiveObjectSignalSet extends DisplayObjectSignalSet {
	public var click(getClick, never) : NativeSignal;
	public var doubleClick(getDoubleClick, never) : NativeSignal;
	public var focusIn(getFocusIn, never) : NativeSignal;
	public var focusOut(getFocusOut, never) : NativeSignal;
	public var keyDown(getKeyDown, never) : NativeSignal;
	public var keyFocusChange(getKeyFocusChange, never) : NativeSignal;
	public var keyUp(getKeyUp, never) : NativeSignal;
	public var mouseDown(getMouseDown, never) : NativeSignal;
	public var mouseFocusChange(getMouseFocusChange, never) : NativeSignal;
	public var mouseMove(getMouseMove, never) : NativeSignal;
	public var mouseOut(getMouseOut, never) : NativeSignal;
	public var mouseOver(getMouseOver, never) : NativeSignal;
	public var mouseUp(getMouseUp, never) : NativeSignal;
	public var mouseWheel(getMouseWheel, never) : NativeSignal;
	public var rollOut(getRollOut, never) : NativeSignal;
	public var rollOver(getRollOver, never) : NativeSignal;
	public var tabChildrenChange(getTabChildrenChange, never) : NativeSignal;
	public var tabEnabledChange(getTabEnabledChange, never) : NativeSignal;
	public var tabIndexChange(getTabIndexChange, never) : NativeSignal;
	public var textInput(getTextInput, never) : NativeSignal;

	public function new(target : InteractiveObject) {
		super(target);
	}

	public function getClick() : NativeSignal {
		return getNativeSignal(MouseEvent.CLICK, MouseEvent);
	}

	public function getDoubleClick() : NativeSignal {
		return getNativeSignal(MouseEvent.DOUBLE_CLICK, MouseEvent);
	}

	public function getFocusIn() : NativeSignal {
		return getNativeSignal(FocusEvent.FOCUS_IN, FocusEvent);
	}

	public function getFocusOut() : NativeSignal {
		return getNativeSignal(FocusEvent.FOCUS_OUT, FocusEvent);
	}

	public function getKeyDown() : NativeSignal {
		return getNativeSignal(KeyboardEvent.KEY_DOWN, KeyboardEvent);
	}

	public function getKeyFocusChange() : NativeSignal {
		return getNativeSignal(FocusEvent.KEY_FOCUS_CHANGE, FocusEvent);
	}

	public function getKeyUp() : NativeSignal {
		return getNativeSignal(KeyboardEvent.KEY_UP, KeyboardEvent);
	}

	public function getMouseDown() : NativeSignal {
		return getNativeSignal(MouseEvent.MOUSE_DOWN, MouseEvent);
	}

	public function getMouseFocusChange() : NativeSignal {
		return getNativeSignal(FocusEvent.MOUSE_FOCUS_CHANGE, FocusEvent);
	}

	public function getMouseMove() : NativeSignal {
		return getNativeSignal(MouseEvent.MOUSE_MOVE, MouseEvent);
	}

	public function getMouseOut() : NativeSignal {
		return getNativeSignal(MouseEvent.MOUSE_OUT, MouseEvent);
	}

	public function getMouseOver() : NativeSignal {
		return getNativeSignal(MouseEvent.MOUSE_OVER, MouseEvent);
	}

	public function getMouseUp() : NativeSignal {
		return getNativeSignal(MouseEvent.MOUSE_UP, MouseEvent);
	}

	public function getMouseWheel() : NativeSignal {
		return getNativeSignal(MouseEvent.MOUSE_WHEEL, MouseEvent);
	}

	public function getRollOut() : NativeSignal {
		return getNativeSignal(MouseEvent.ROLL_OUT, MouseEvent);
	}

	public function getRollOver() : NativeSignal {
		return getNativeSignal(MouseEvent.ROLL_OVER, MouseEvent);
	}

	public function getTabChildrenChange() : NativeSignal {
		return getNativeSignal(Event.TAB_CHILDREN_CHANGE);
	}

	public function getTabEnabledChange() : NativeSignal {
		return getNativeSignal(Event.TAB_ENABLED_CHANGE);
	}

	public function getTabIndexChange() : NativeSignal {
		return getNativeSignal(Event.TAB_INDEX_CHANGE);
	}

	public function getTextInput() : NativeSignal {
		return getNativeSignal(TextEvent.TEXT_INPUT, TextEvent);
	}

}

